// my_module.cpp
#include <Python.h>

// 示例函数：返回两个数的和
static PyObject* fun1(PyObject* self, PyObject* args) {
    int a, b;
    if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
        return NULL;
    }
    return PyLong_FromLong(a + b);
}

static PyObject* fun2(PyObject* self, PyObject* args) {
    int a, b;
    if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
        return NULL;
    }
    return PyLong_FromLong(a - b);
}


// 方法定义表
static PyMethodDef MyMethods[] = {
    {"add", fun1, METH_VARARGS, "Add two integers"},
    {"sub", fun2, METH_VARARGS, "Subtract two integers"},
    {NULL, NULL, 0, NULL}  // 哨兵
};

// 模块定义
static struct PyModuleDef my_module = {
    PyModuleDef_HEAD_INIT,
    "my_module",  // 模块名
    NULL,         // 文档字符串
    -1,           // 全局状态大小
    MyMethods     // 方法表
};

// 模块初始化函数
PyMODINIT_FUNC PyInit_my_module(void) {
    return PyModule_Create(&my_module);
}